package indi.jp.project.business.jingying.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import indi.jp.project.core.entity.BaseEntity;
import indi.jp.project.process.entity.FlowTask;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 经营用品审批
 *
 * @author jiangping
 * @since 2022-05-07 10:27:23
 */
public class Supplies extends BaseEntity {

    /**
     * 主键
     */
    private String id;

    /**
     * 项目编号
     */
    @NotBlank(message = "项目信息不能为空")
    private String projectCode;

    /**
     * 项目名称
     */
    @NotBlank(message = "项目信息不能为空")
    private String projectName;
    /**
     * 部门ID
     */
    @NotBlank(message = "部门信息不能为空")
    private String departmentId;
    /**
     * 部门编码
     */
    @NotBlank(message = "部门信息不能为空")
    private String departmentCode;
    /**
     * 部门名称
     */
    @NotBlank(message = "部门信息不能为空")
    private String departmentName;
    /**
     * 活动时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date activityDate;
    /**
     * 活动地点
     */
    private String activityAddr;
    /**
     * 申请人（中文名）
     */
    private String applyMan;
    /**
     * 参与人员，逗号分隔
     */
    private String joinMans;
    /**
     * 拜访单位
     */
    private String enterprise;
    /**
     * 拜访人员及职位
     */
    private String customAndPost;
    /**
     * 计划费用（单位：分）
     */
    private BigDecimal planFees;
    /**
     * 是否包含酒水（0:否，1:是）
     */
    private Integer isWine;
    /**
     * 事由及预期效果
     */
    private String reasonAndDesired;
    /**
     * 是否有客户关系维护记录（customer relationship maintenance record）
     */
    private Integer isCrmr;
    /**
     * 收货地址
     */
    private String shippingAddr;
    /**
     * 收货人
     */
    private String consignee;
    /**
     * 收货人电话
     */
    private String consigneePhone;
    /**
     * 流程类型编码
     */
    @NotBlank(message = "流程类型编码不能为空")
    private String flowTypeCode;

    /**
     * 流程状态，以0为起点
     */
    private Integer state;

    /**
     * 状态名称
     */
    private String stateName;

    /**
     * 处理人
     */
    private String handler;

    /**
     * 处理人名称
     */
    private String handlerName;
    /**
     * 是否允许撤回
     */
    private Integer allowRevoke;
    /**
     * 被驳回时状态
     */
    private Integer rejectedState;
    /**
     * 用品信息列表
     */
    @NotNull(message = "请填写用品信息")
    private List<SuppliesItem> items;

    /**
     * 流程信息列表
     */
    @NotNull(message = "流程信息不能为空")
    private List<FlowTask> flowList;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(String departmentId) {
        this.departmentId = departmentId;
    }

    public String getDepartmentCode() {
        return departmentCode;
    }

    public void setDepartmentCode(String departmentCode) {
        this.departmentCode = departmentCode;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }

    public Date getActivityDate() {
        return activityDate;
    }

    public void setActivityDate(Date activityDate) {
        this.activityDate = activityDate;
    }

    public String getActivityAddr() {
        return activityAddr;
    }

    public void setActivityAddr(String activityAddr) {
        this.activityAddr = activityAddr;
    }

    public String getApplyMan() {
        return applyMan;
    }

    public void setApplyMan(String applyMan) {
        this.applyMan = applyMan;
    }

    public String getJoinMans() {
        return joinMans;
    }

    public void setJoinMans(String joinMans) {
        this.joinMans = joinMans;
    }

    public String getEnterprise() {
        return enterprise;
    }

    public void setEnterprise(String enterprise) {
        this.enterprise = enterprise;
    }

    public String getCustomAndPost() {
        return customAndPost;
    }

    public void setCustomAndPost(String customAndPost) {
        this.customAndPost = customAndPost;
    }

    public Integer getIsWine() {
        return isWine;
    }

    public void setIsWine(Integer isWine) {
        this.isWine = isWine;
    }

    public String getReasonAndDesired() {
        return reasonAndDesired;
    }

    public void setReasonAndDesired(String reasonAndDesired) {
        this.reasonAndDesired = reasonAndDesired;
    }

    public Integer getIsCrmr() {
        return isCrmr;
    }

    public void setIsCrmr(Integer isCrmr) {
        this.isCrmr = isCrmr;
    }

    public String getShippingAddr() {
        return shippingAddr;
    }

    public void setShippingAddr(String shippingAddr) {
        this.shippingAddr = shippingAddr;
    }

    public String getConsignee() {
        return consignee;
    }

    public void setConsignee(String consignee) {
        this.consignee = consignee;
    }

    public String getConsigneePhone() {
        return consigneePhone;
    }

    public void setConsigneePhone(String consigneePhone) {
        this.consigneePhone = consigneePhone;
    }

    public String getFlowTypeCode() {
        return flowTypeCode;
    }

    public void setFlowTypeCode(String flowTypeCode) {
        this.flowTypeCode = flowTypeCode;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public String getStateName() {
        return stateName;
    }

    public void setStateName(String stateName) {
        this.stateName = stateName;
    }

    public String getHandler() {
        return handler;
    }

    public void setHandler(String handler) {
        this.handler = handler;
    }

    public String getHandlerName() {
        return handlerName;
    }

    public void setHandlerName(String handlerName) {
        this.handlerName = handlerName;
    }

    public List<SuppliesItem> getItems() {
        return items;
    }

    public void setItems(List<SuppliesItem> items) {
        this.items = items;
    }

    public List<FlowTask> getFlowList() {
        return flowList;
    }

    public void setFlowList(List<FlowTask> flowList) {
        this.flowList = flowList;
    }

    public Integer getAllowRevoke() {
        return allowRevoke;
    }

    public void setAllowRevoke(Integer allowRevoke) {
        this.allowRevoke = allowRevoke;
    }

    public Integer getRejectedState() {
        return rejectedState;
    }

    public void setRejectedState(Integer rejectedState) {
        this.rejectedState = rejectedState;
    }

    public BigDecimal getPlanFees() {
        return planFees;
    }

    public void setPlanFees(BigDecimal planFees) {
        this.planFees = planFees;
    }
}

